1. Field of the Invention
The present invention relates to a method, system, and program for managing data storage during install operations.
2. Description of the Related Art
An installer program is a software program that enables a programmer to write specific code to install a given application program onto the drives of a computer in a way that enables the given application program to work correctly with the computer""s environment, including its operating system. There are several types of installersxe2x80x94Java installers and operating system specific installers, e.g.., Microsoft Windows installers, and International Business Machines (xe2x80x9cIBMxe2x80x9d) OS/2 and AIX operating system installers, etc. Many of the install programs existing today have various limitations in their functionality as discussed below.
One type of Java installer is provided by a software company known as InstallShield. Currently, the functionality and configurability of this Java installer is somewhat limited. For example, the Java installer provides default panels, but the text cannot be changed or configured. Also, this Java installer is not easy to customize. In other words, a programmer cannot easily add a function that is not provided by the installer program. In addition, the current Java installer provides only limited registry support. A registry is a central repository for all possible information for the computer such as hardware configurations and software settings, etc. The registry maintains information on installed components. A programmer or user can access the registry to determine information about installed products, based upon what the user/programmer placed into the registry or what information is useful to the user. Presently, the Java installer only works with a Microsoft Windows"" registry; and the support provided with Microsoft Windows is limited. For example, the current Java installer does not enable the Windows"" system registry to be updated directly. Instead, the keys to update in the registry are in a file which must be imported into the registry through a system call. It would be desirable if such a Java installer program supported multiple directories, splash screens (which are images that come up while a software product is being installed), and multiple languages instead of only English. Furthermore, it would be desirable for a given installer program to be more broadly applicable to other environments and operating systems. Although InstallShields"" Java installer is tailored to Java, it is also geared somewhat for the Windows"" operating system as discussed above in terms of the Windows"" registry support provided. However, it does not provide specific support for other operating systems such as the IBM OS/2 and AIX operating systems.
Another Java installer is called xe2x80x9cInstall Anywherexe2x80x9d from ZeroG. This Java installer program also has a default panel that is not configurable, e.g., the order in which panels appear is not customizable. Likewise, registry support is limited. A user/programmer updates a registry from a file using a xe2x80x9creg_editxe2x80x9d command. Although this installer program enables a user/programmer to add a few items into the registry, the registry cannot be queried. In addition, other registry functional features are not available. Likewise, there is no multiple directory support, and no national language support. Also, it does not support multiple operating systems, i.e., there is no OS/2 or AIX specific support.
Another approach would be to provide install APIs for Java. However, this approach is not yet available.
With respect to operating system specific installers, InstallShield provides a Microsoft Windows"" 32 installer, e.g., Microsoft Windows 95/98 and NT. Although this installer program is widely used throughout the industry, it is based upon a proprietary scripting language developed by InstallShield. The scripting language is similar to Basic programming language. Programmers, who generally have experience and knowledge of object oriented programs such as C++ and Java, must learn this proprietary InstallShield script, which is not related to the popular computer languages, in order to program an Install program. This unfamiliarity with the proprietary InstallShield scripting language complicates the installer programming process.
Furthermore, programs are frequently installed onto more than one disk drive or other data storage drive. Many installation programs do not adequately check to ensure that each destination drive has sufficient available storage space before initiating the installation onto those drives. For example, it is believed that many Java installers do not check drive space at all. This is particularly troublesome if as is often the case, the user is not given a choice as to which drives the various parts of the program are installed. Other installation programs such as Installshields for Windows do give the user a choice as to one or more of the destination drives but typically require the user to keep track of the space available on each drive and the amount of space required.
Also, many disk drives have a predetermined minimum disk space, often referred to as a xe2x80x9cblock size,xe2x80x9d for storing a file on the drive. Thus, if a file is substantially smaller than the block size, the disk drive will still require a full block to be available to store that file. Hence, the indicated total size of the files to be stored on a drive often does not provide a true indication of the total storage space needed to store those files on a particular drive. As a result, time can be wasted in a futile attempt to store a set of files on a drive despite the fact that the drive has free space available which exceeds the actual size of the files but is less than the total number of blocks required.
Thus, there is a need in the art for a cross-platform installation program that is capable of installing and uninstalling a product on different operating systems and, at the same time, is capable of checking the storage space of the intended destination data storage drives of the operating system.
To overcome the limitations in the prior art described above, preferred embodiments disclose a system, method, program, and data structure for installing a program onto a computer including an operating system. In accordance with one aspect of the present invention, a drive object is created to represent a data storage drive such as a disk drive, preferably, in a platform independent manner. In the illustrated embodiment, a unique drive object is created for each data storage drive in the operating system. Each drive object maintains information about the associated drive. For example, in the illustrated embodiment, fields or instance variables represent the drive""s name, the amount of free space available on that drive, the block size of the drive, the drive type, the data storage format, and whether the drive supports long file names. In addition, each drive object can store for each set of files intended to be stored on the associated drive, the amount of disk storage space to store those files. Prior to installation of the files, the amount of space needed to install all of the files intended to be installed on a particular drive can be compared to the free space available on the drive to ensure there is adequate space available. As explained in greater detail below, such an arrangement facilitates successful installation of files on a plurality of drives without requiring the user to manually check all the destination disk drives prior to installation.
In accordance with another aspect of the present invention, by storing the block size, that is, the minimum space required by the drive to store a file, the actual drive space required to store a set of files may be accurately calculated and compared to the free space available. As consequence, it may be accurate determined prior to installation whether or not the intended destination drive has sufficient storage space available to store a particular set of files.
With preferred embodiments the install program can function as a cross-platform installer that can be used to install products across multiple operating systems including those having a plurality of data storage drives on which files are installed.